// 引入核心库
import axios from 'axios'
//通过querystring去进行转化
import qsString from 'querystring'
//引入封装好的路由库
import router from '../router'
// 公共地址
let baseUrl = '/api'

// 设置请求拦截
axios.interceptors.request.use((req) => {
    //要给所有的接口添加token 。除了登录（？为什么===>因为token是登录返回的）
    // console.log(req, '请求');
    if (req.url != '/api/userlogin') {
        //不是登录就要添加请求头
        req.headers.authorization = sessionStorage.getItem('userinfo') ? JSON.parse(sessionStorage.getItem('userinfo')).token : null
    }

    return req
})
// 设置响应拦截
axios.interceptors.response.use((res) => {
    // 全局拦截错误
    if (res.data.msg == '请设置请求头,并携带验证字符串') {
        alert(res.data.msg)
        //跳转到登录页
        router.push('/login')
    }
    if (res.data.msg == '登录已过期或访问权限受限') {
        alert(res.data.msg)
        //跳转到登录页
        router.push('/login')
    }
    return res.data
})

// 封装get请求
export const get = (url, params = {}) => {
    return new Promise((resolve, reject) => {
        axios.get(baseUrl + url, {
                params
            })
            .then(res => {
                resolve(res)
            })
            .catch(err => {
                reject(err)
            })
    })
}

// 封装post请求
export const post = (url, params = {}, isFile = false) => {
    let data = {}
    if (isFile) {
        data = new FormData()
        for (let i in params) {
            data.append(i, params[i])
        }
    } else {
        data = qsString.stringify(params)
    }
    return new Promise((resolve, reject) => {
        axios
            .post(baseUrl + url, data)
            .then((res) => {
                resolve(res);
            })
            .catch((err) => {
                reject(err);
            });
    });
};